Numerous apparatuses and methods for enabling hot installation of peripheral devices, control circuits and power supplies on and hot removal of same from computer buses are known in the art. Historically, in order to minimize the potentially detrimental effects of plugging into a bus, the preferred procedure has been to shut down the bus, thereby preventing a newly installed device from disrupting data flow on the bus. In contrast, "hot plugging," or "hot swapping," methods provide both power and data transfer interconnections between a computer bus and a newly installed device without requiring power to be removed from the bus. Hot plugging is commonly implemented in fault tolerant computer systems, which normally employ device or field replaceable unit redundancy coupled with operational comparison and checking logic to ensure correct operation. When a fault is detected, an indication of the failing device is provided to service personnel, who then simply remove the failing device and install a replacement therefor. Such removal and installation procedures are performed without regard to bus activity; therefore, both the bus architecture and device electronics must be carefully designed to achieve such hot plugging capability.
In many hot plug schemes, there is no provision for indicating to the system that a drive is to be installed on or removed from the bus. In other words, a drive is simply installed or removed without first "consulting" with the system to determine whether such installation or removal will adversely affect the system. For example, a common prior art method of implementing hot pluggable small computer systems interface (SCSI) drive systems relies on a SCSI bus reset after a drive has already been removed or inserted. Such interface systems suffer several deficiencies.
For example, initiating a SCSI reset in response to the occurrence of a hot plug event causes a considerable time delay where the host operating system is stalled while waiting for data transactions to resume with the SCSI host adapter subsystem. This delay is believed to be unacceptable for certain operating systems. Furthermore, not providing an electrical power decoupling interface for each SCSI drive is considered by many skilled artisans to be electrically unreliable. SCSI drives monitor their +5 volt and +12 volt power forms and can reset themselves if a fault condition beyond their threshold range is detected. Electrically installing a SCSI drive causes a momentary power glitch which can appear to adjacent local physical drives as a power fault. In addition, removal of a drive that is not redundant, as well as removal of a drive during a diagnostics or configuration/maintenance program, will typically result in system failure. User error could easily result in such an action. Finally, electrically introducing a "bad" drive (i.e., one that fails normal inquiry and/or initialization) may also cause system failure.
Clearly, therefore, a priori knowledge that a device is to about to be installed on or removed from an active bus would reduce system complexity and increase system reliability because such knowledge would (1) allow the system to determine how to deal with the additional or missing device and (2) enable the bus to be placed in a known electrical state prior to the electrical connection or disconnection of the device.
One known method of ameliorating the foregoing problems is to include in a computer system a proactive software interface, which enables the user to inform the system that a device is to be installed or removed prior to its respective installation or removal. Though such software interfaces do communicate a priori knowledge of the impending installation/removal of a device prior to the actual installation/removal, such software interfaces may not be implemented in many cases.
Therefore, what is needed is an apparatus and a method for implementing a fault tolerant hot swap request/acknowledge scheme for enabling hot swapping of a device on a computer bus without adversely affecting the integrity of the bus and/or the computer system.